﻿#region Header

/*
Remote views based on linq
By

Pascal Hauser 
Dipl. Ing. in Informatik, Hochschule für Technik Rapperswil, 2006
Master Thesis, Hochschule für Technik Rapperswil, 2008-2010

and

Raphael Gfeller
Dipl. Ing. in Informatik, Hochschule für Technik Rapperswil, 2006
Master Thesis, Hochschule für Technik Rapperswil, 2008-2010

*/

#endregion

#region Usings

#endregion

namespace Sebastof.Services.Interfaces {
	/// <summary>
	/// is responsible for 
	/// - synchronizing  two versions of an object
	/// - allows to mark object as invalid, so them have always to be replaced by the new version of the object
	/// </summary>
	public interface IObjectSynchronisationService {
		#region Public Methods

		/// <summary>
		/// merges the given object together
		/// </summary>
		/// <param name="objectKey">id of the object</param>
		/// <param name="currentObject">current object</param>
		/// <param name="newObject">new object</param>
		/// <returns></returns>
		object MergeObject(string objectKey, object currentObject, object newObject);

		/// <summary>
		/// marks the object with the given ide as invalid
		/// </summary>
		/// <param name="objectKey"></param>
		void MarkObjectAsInvalid(string objectKey);

		#endregion
	}
}